﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Resources;
using System.Reflection;
using System.IO;

namespace Jurassic_Island
{
    public partial class FormMapas : Form
    {
        //En esta String se almacena la ruta donde se está ejecutando la aplicación.
        
        /*private String rutaEjecucion = Path.GetDirectoryName(
                System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);*/
        private String nombreMapa = "mapa.png";

        public FormMapas()
        {
            InitializeComponent();
        }

        private void btCerrar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btSeleccionarMapa_Click(object sender, EventArgs e)
        {

            string cwd = System.Reflection.Assembly.GetExecutingAssembly().Location;
            string projectName = "Jurassic Island";  //YOUR PROJECT NAME HERE

            string solutionPath = cwd.Replace(projectName + @"\bin\Debug\", "");
            string SolutionDirectory = Path.GetDirectoryName(solutionPath);

            string webPath = SolutionDirectory + @"\JurassicIslandWeb\";

            try
            {
                if (openFileDialogMapas.ShowDialog() == DialogResult.OK)
                {
                    pbMapa.Image = System.Drawing.Bitmap.FromFile(openFileDialogMapas.FileName);
                    btSubirMapa.Enabled = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al cargar el archivo. " + ex.Message, "Jurassic Island", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }

            
        }

        private void FormMapas_Load(object sender, EventArgs e)
        {
            if (pbMapa.ImageLocation == null)
            {
                Uri uri2 = new Uri(rutaImagen(nombreMapa));
                String rutaWeb = uri2.LocalPath;
                if (File.Exists(rutaWeb))
                {
                    pbMapa.ImageLocation = rutaImagen(nombreMapa);
                    btSubirMapa.Enabled = true;
                    btBorrarMapa.Enabled = true;
                }
            }
        }

        private void btSubirMapa_Click(object sender, EventArgs e)
        {
            try
            {
                pbMapa.Image.Save(rutaImagen(nombreMapa), System.Drawing.Imaging.ImageFormat.Png);
                btSubirMapa.Enabled = true;
                btBorrarMapa.Enabled = true;
                MessageBox.Show("Mapa subido con éxito", "Mapa subido");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error:\n" + ex.Message, "Error al subir mapa", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            //MessageBox.Show(rutaEjecucion);

        }

        private void btBorrarMapa_Click(object sender, EventArgs e)
        {
            try
            {
                Uri uri = new Uri(pbMapa.ImageLocation);
                String rutaMapa = uri.LocalPath;
                if (File.Exists(rutaMapa))
                    File.Delete(rutaMapa);
                pbMapa.Image = null;
                btSubirMapa.Enabled = false;
                btBorrarMapa.Enabled = false;
                MessageBox.Show("Mapa borrado con éxito", "Mapa borrado");
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private String rutaImagen(String fichero)
        {
            //cwd: Ruta de ejecución del ejecutable windows
            string cwd = System.Reflection.Assembly.GetExecutingAssembly().Location;
            //Nombre del proyecto
            string projectName = "Jurassic Island";
            //Ruta de la solucion
            string solutionPath = cwd.Replace(projectName + @"\bin\Debug\", "");
            //Directorio de la solucion
            string SolutionDirectory = Path.GetDirectoryName(solutionPath);

            //Directorio del proyecto web
            string webPath = SolutionDirectory + @"\JurassicIslandWeb\MapFiles";
            return (webPath + @"\" + fichero);
        }
    }
}
